import sys
import csv


from PySide2.QtWidgets import QMainWindow, QTableWidget, QTableWidgetItem, QWidget, QApplication

from lib.share import SI


class DataShow():
    def __init__(self,filename):
        super().__init__()

        self.filename = filename
        # 创建显示控件
        self.widget = SI.main.ui.centralwidget
        # 创建表格控件
        self.table_widget=SI.main.ui.tableWidget

        self.table_widget.setHorizontalHeaderLabels(['日期', '收盘', '开盘', '高', '低', '交易量', '涨跌幅'])
        # 加载 CSV 文件
        self.load_csv(self.filename)
        print("加载成功 ")

    def load_csv(self, filename):
        try:
            # 打开 CSV 文件
            with open(filename, newline='', encoding='utf-8') as csvfile:
                reader = csv.reader(csvfile)
                csv_data = list(reader)

                # 跳过标题行（如果CSV文件包含标题行的话）
                if csv_data and isinstance(csv_data[0], list) and len(csv_data[0]) == 7:
                    csv_data = csv_data[1:]

                # 设置行列数
                self.table_widget.setRowCount(len(csv_data))
                self.table_widget.setColumnCount(len(csv_data[0]))

                # 设置列标题
                column_headers = ['日期', '收盘', '开盘', '高', '低', '交易量', '涨跌幅']
                self.table_widget.setHorizontalHeaderLabels(column_headers)

                # 填充表格数据
                for row_idx, row_data in enumerate(csv_data):
                    for col_idx, col_data in enumerate(row_data):
                        item = QTableWidgetItem(col_data)
                        self.table_widget.setItem(row_idx, col_idx, item)

                # 隐藏行号和列号
                self.table_widget.verticalHeader().setVisible(False)
                self.table_widget.horizontalHeader().setVisible(True)  # 如果需要显示列标题，则设置为True
        except FileNotFoundError:
            print(f"Error: 文件 '{filename}' 未找到.")
        except Exception as e:
            print(f"Error: 加载CSV文件时发生错误: {e}")
# if __name__ == "__main__":
#     app = QApplication(sys.argv)
#     window = DataShow("../data/bili2.csv")
#     window.show()
#     app.exec_()